home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / gfx / misc / gnuplot-3.7src.lha / gnuplot-3.7src / gnuplot-3.7.lha / gnuplot-3.7 / docs / doc2gih.c < prev    next >
C/C++ Source or Header  |  1998-10-19  |  4KB  |  148 lines

  1. /*
  2.  * $Id: doc2gih.c,v 1.16 1998/04/14 00:16:58 drd Exp $
  3.  *
  4.  */
  5.  
  6. /* GNUPLOT - doc2gih.c */
  7.  
  8. /*[
  9.  * Copyright 1986 - 1993, 1998   Thomas Williams, Colin Kelley
  10.  *
  11.  * Permission to use, copy, and distribute this software and its
  12.  * documentation for any purpose with or without fee is hereby granted,
  13.  * provided that the above copyright notice appear in all copies and
  14.  * that both that copyright notice and this permission notice appear
  15.  * in supporting documentation.
  16.  *
  17.  * Permission to modify the software is granted, but not the right to
  18.  * distribute the complete modified source code.  Modifications are to
  19.  * be distributed as patches to the released version.  Permission to
  20.  * distribute binaries produced by compiling modified sources is granted,
  21.  * provided you
  22.  *   1. distribute the corresponding source modifications from the
  23.  *    released version in the form of a patch file along with the binaries,
  24.  *   2. add special version identification to distinguish your version
  25.  *    in addition to the base release version number,
  26.  *   3. provide your name and address as the primary contact for the
  27.  *    support of your modified version, and
  28.  *   4. retain our contact information in regard to use of the base
  29.  *    software.
  30.  * Permission to distribute the released version of the source code along
  31.  * with corresponding source modifications in the form of a patch file is
  32.  * granted with same provisions 2 through 4 for binary distributions.
  33.  *
  34.  * This software is provided "as is" without express or implied warranty
  35.  * to the extent permitted by applicable law.
  36. ]*/
  37.  
  38. /*
  39.  * doc2gih.c  -- program to convert Gnuplot .DOC format to gnuplot
  40.  * interactive help (.GIH) format.
  41.  *
  42.  * This involves stripping all lines with a leading digit or
  43.  * a leading @, #, or %.
  44.  * Modified by Russell Lang from hlp2ms.c by Thomas Williams 
  45.  *
  46.  * usage:  doc2gih [file.doc [file.gih]]
  47.  *
  48.  * Original version by David Kotz used the following one line script!
  49.  * sed '/^[0-9@#%]/d' file.doc > file.gih
  50.  */
  51.  
  52. #ifdef HAVE_CONFIG_H
  53. # include "config.h"
  54. #endif
  55.  
  56. #include "ansichek.h"
  57. #include "stdfn.h"
  58. #include "doc2x.h"
  59.  
  60. void convert __PROTO((FILE *, FILE *));
  61. void process_line __PROTO((char *, FILE *));
  62.  
  63. int main(argc, argv)
  64. int argc;
  65. char **argv;
  66. {
  67.     FILE *infile;
  68.     FILE *outfile;
  69.  
  70.     infile = stdin;
  71.     outfile = stdout;
  72.  
  73.     if (argc > 3) {
  74.     fprintf(stderr, "Usage: %s [infile [outfile]]\n", argv[0]);
  75.     exit(EXIT_FAILURE);
  76.     }
  77.     if (argc >= 2) {
  78.     if ((infile = fopen(argv[1], "r")) == (FILE *) NULL) {
  79.         fprintf(stderr, "%s: Can't open %s for reading\n",
  80.             argv[0], argv[1]);
  81.         exit(EXIT_FAILURE);
  82.     }
  83.     }
  84.     if (argc == 3) {
  85.     if ((outfile = fopen(argv[2], "w")) == (FILE *) NULL) {
  86.         fprintf(stderr, "%s: Can't open %s for writing\n",
  87.             argv[0], argv[2]);
  88.         exit(EXIT_FAILURE);
  89.     }
  90.     }
  91.  
  92.     convert(infile, outfile);
  93.  
  94.     exit(EXIT_SUCCESS);
  95. }
  96.  
  97.  
  98. void convert (inf, outf)
  99. FILE *inf, *outf;
  100. {
  101.     static char line[MAX_LINE_LEN+1];
  102.  
  103.     while (get_line(line, sizeof(line), inf))
  104.         process_line(line, outf);
  105. }
  106.  
  107.  
  108. void process_line(line, b)
  109. char *line;
  110. FILE *b;
  111. {
  112.     static int line_count = 0;
  113.  
  114.     line_count++;
  115.  
  116.     switch (line[0]) {        /* control character */
  117.     case '?':{            /* interactive help entry */
  118.         (void) fputs(line, b);
  119.         break;
  120.     }
  121.     case '@':{            /* start/end table */
  122.         break;        /* ignore */
  123.     }
  124.     case '#':{            /* latex table entry */
  125.         break;        /* ignore */
  126.     }
  127.     case '%':{            /* troff table entry */
  128.         break;        /* ignore */
  129.     }
  130.     case '^':{            /* html entry */
  131.         break;        /* ignore */
  132.     }
  133.     case '\n':            /* empty text line */
  134.     case ' ':{            /* normal text line */
  135.         (void) fputs(line, b);
  136.         break;
  137.     }
  138.     default:{
  139.         if (isdigit((int)line[0])) {    /* start of section */
  140.         /* ignore */
  141.         } else
  142.         fprintf(stderr, "unknown control code '%c' in column 1, line %d\n",
  143.             line[0], line_count);
  144.         break;
  145.     }
  146.     }
  147. }
  148.